# 指定最低支持的 CMake 版本为 3.20
cmake_minimum_required(VERSION 3.20)

# 定义项目名称为 "Pinea"
project(Pinea)

# 设置 C++ 标准为 C++20
set(CMAKE_CXX_STANDARD 20)

# 强制要求 C++20 标准，如果编译器不支持则会报错
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置 Release 构建类型的可执行文件输出目录
# 适用于 .exe、.dll 等运行时文件（Windows 下 DLL 属于运行时输出）
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/bin)

# 设置 Release 构建类型的静态库输出目录
# 适用于 .lib（Windows 静态库）、.a（Linux 静态库）等归档文件
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/lib)

# 创建一个名为 ${PROJECT_NAME}（即 "Pinea"）的共享库（动态链接库）
# SHARED 关键字指定生成动态库（Windows 下为 .dll，Linux 下为 .so）
# 源文件为 src 目录下的 Pinea.cpp
add_library(${PROJECT_NAME} SHARED src/Pinea.cpp)

# 为目标库设置私有头文件搜索目录
# PRIVATE 表示该目录仅用于当前目标的编译，不传递给依赖它的其他目标
# ${CMAKE_SOURCE_DIR}/include 指向项目根目录下的 include 文件夹
target_include_directories(${PROJECT_NAME} PRIVATE 
    ${CMAKE_SOURCE_DIR}/include
)

# 为目标库设置链接目录
# 指定链接阶段查找库文件（.lib、.a 等）的路径
# 这里指向项目根目录下的 lib 文件夹
target_link_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/lib)

# 为目标库设置链接的库文件
target_link_libraries(${PROJECT_NAME} PRIVATE SDL3 SDL3_image)

# 为目标库设置预处理器宏定义
target_compile_definitions(${PROJECT_NAME} PRIVATE -DPINEA_BUILD_DLL)